The computer keyboard is the primary input device for the entry of commands and data into a computer system. Typically, the computer keyboard employs a grid or matrix of switches. When a key corresponding to a particular intersection of the grid or matrix is pressed a processor built into the keyboard identifies the key by identifying the grid location. For example, where the key matrix employs contact switches, electrical continuity will be present at a particular column and row of the matrix. Other types of switches may also be employed, such as capacitive switches wherein a change in capacitance of the circuit corresponding to a particular column and row may be detected by the keyboard processor.
The keyboard processor performs several functions, including debouncing the keystrokes, i.e., filtering very rapid on-off cycles that may occur where a key switch makes contact, determining how long a key has been pressed, and interpreting multiple or simultaneous key strokes.
After reading the key matrix and debouncing the keypress signal, the keypress is converted to a scan code corresponding to the particular key pressed and the scan code data is sent via a serial interface to a keyboard controller located on the main logic board or motherboard of the computer. The keyboard controller sends an interrupt signal and then sends the data to the CPU. In some older systems, the raw scan code data is transferred to the CPU and the scan code is translated by a subroutine running on the CPU, however, in most systems, the keyboard controller translates the scan code. Scan codes are typically sent in 11-bit data packets consisting of 8 data bits and three framing and control bits.
There are many instances where it would be desirable to capture and display the raw scan codes directly as they are sent from the keyboard. Where the keyboard serial interface is bidirectional, it would also be useful to be able to capture and display the data sent from the computer to the keyboard. It would be useful to be able to view scan codes when troubleshooting and diagnosing apparent keyboard malfunctions in order to determine if the malfunction is in the key switches, the keyboard processor, the serial interface cable, the keyboard controller, the motherboard, a fuse where the keyboard and mouse connectors are fuse protected, etc. For example, when a key is stuck or fails, the power-on self test (POST) or other diagnostic software may report it. However, the POST included in the basic input/output system (BIOS) of some systems may report only that the keyboard has a stuck key, but may fail to state which key it is, leaving it to the user to find out which key it is.
Software applications exist which will display scan code data to the system display monitor, however, what is displayed is not the raw scan code data itself, but rather, scan code data that is regenerated after the raw scan code data itself has been translated or otherwise processed.
It would, therefore, be desirable to provide an apparatus and method for the capture and display of scan code data wherein the scan code data is in its raw form and has not been deciphered or processed by any software application, operating system, or by the ROM BIOS of the main logic board or of the keyboard controller.